package servletUtenteReg;

import gestioneContesto.GestoreContesto;

import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dominio.RichiestaAiuto;

import logicaUtenteReg.GestoreRichiesteRemote;

/**
 * Servlet implementation class AccettaRicAiutoServlet
 */
public class AccettaRicAiutoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	private RequestDispatcher dispatcher;
	private GestoreContesto contesto;
	private final int ESITO = 2;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AccettaRicAiutoServlet() {

		super();
		contesto = new GestoreContesto();

	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {
			eseguiRichiesta(request, response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {
			eseguiRichiesta(request, response);
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	@SuppressWarnings("deprecation")
	private void eseguiRichiesta(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, NamingException, ParseException {

		GestoreRichiesteRemote gestore = contesto.getGestore(GestoreRichiesteRemote.class, "GestoreRichiesteRemote");

		String destinatario = request.getParameter("destinatario");
		String nome = request.getParameter("nome");
		String cognome = request.getParameter("cognome");
		String richiedente = request.getParameter("richiedente");
		String data = request.getParameter("data");
		
		Date date = contesto.formattaData(data);
		
		gestore.processaRichiestaAiuto(richiedente, destinatario, date, ESITO);
		
		ArrayList<RichiestaAiuto> lista = gestore.listaRicAiuto(destinatario);

		if(lista != null) {

			for(int i = 0; i < lista.size(); i++) {

				request.setAttribute("richiedente" + i, lista.get(i).getRichiedente());
				request.setAttribute("oggetto" + i, lista.get(i).getOggetto());
				request.setAttribute("descrizione" + i, lista.get(i).getDescrizione());
				request.setAttribute("data" + i, lista.get(i).getData());
				request.setAttribute("anno" + i, lista.get(i).getData().getYear());
				request.setAttribute("mese" + i, lista.get(i).getData().getMonth());
				request.setAttribute("giorno" + i, lista.get(i).getData().getDate());
				request.setAttribute("ore" + i, lista.get(i).getData().getHours());
				request.setAttribute("minuti" + i, lista.get(i).getData().getMinutes());
				request.setAttribute("secondi" + i, lista.get(i).getData().getSeconds());

			}

			request.setAttribute("size", lista.size());

		}
		else {

			request.setAttribute("size", 0);

		}

		request.setAttribute("username", destinatario);
		request.setAttribute("nome", nome);
		request.setAttribute("cognome", cognome);
		dispatcher = request.getRequestDispatcher("RichiesteAiuto.jsp");
		dispatcher.forward(request, response);

	}

}
